/**
 * @author xhw
 */


class A {
    //父类A类
    private int num = 10;

    public int getNum() {
        return this.num;
    }

    public void fun() {
        System.out.println("这是爸爸A");
    }
}

class B extends A {
    //B类继承A类
    private String name = "张三";

    public String getName() {
        return this.name;
    }

    public void fun() {
        System.out.println(this.getNum());
        //父类私有属性可以被继承但是不能直接使用，需通过getter方法间接获得私有属性
        //子类中没找到那么会去父类中寻找
    }
}

class C extends B {
    //C类继承B类，相当于间接继承A类
    private String name = "李四";

    public String getName() {
        return this.name;
    }

    public void fun() {//方法覆写（结果为覆写后的内容）
        System.out.println(this.getName());
        System.out.println(this.name);
    }
}

public class 继承 {
    public static void main(String[] args) {
        A a = new A();
        a.fun();

        print(new B());
        print(new C());
    }

    public static void print(A a) {
        a.fun();
    }


}
